Most image compression schemes are designed for “natural images” such as photos taken by a digital camera. For natural images, strong correlation exists among neighboring pixels. Hence, most image compression schemes work as follows:
1. The pixels are decorrelated using prediction or transform or both, resulting in a sparse histogram of the prediction residuals or transform coefficients. The histogram has a single peak which is located around 0.
2. Quantization is applied as necessary.
3. The (quantized) prediction residuals or transform coefficients are entropy coded. The entropy coder is designed for distributions described above. If the distribution has a significantly different shape, the coding performance is able to be poor.
However, there are many “unnatural images” such as images of graphics or text which typically have a large dynamic range, strong contrast, sharp edges, strong textures and sparse histograms. These types of images are usually not handled well by conventional image compression algorithms. Inter-pixel correlation is weaker, and prediction or transform does not provide a sparse distribution as it does for natural images.
Some schemes have been proposed for unnatural images. One example is referred to as “histogram packing” where the encoder goes through the whole image, computes the histogram and does a non-linear mapping of the pixels before compressing the image. The compression requires a two-pass processing, causing increased memory cost and more computations. The bitstream is not scalable which means that the decoder needs the whole bitstream to decode the image. Partial reconstruction is not possible without re-encoding.
In some versions of Embedded Graphics Coding (EGC), bit-plane coding is executed where for each existing group: if the current groups is not too small and there are not too many groups existing, the split bit for the group is sent, followed by 1 bit or multiple bits to refine the pixel values in the group; otherwise, raw bits are sent for refinement. Therefore, the groups are processed one by one.